package com.wfh.mianshiji.tts.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * TTS配置类
 * 用于控制音频转换和编码的行为
 *
 * @author fenghuanwang
 */
@Configuration
@ConfigurationProperties(prefix = "tts.config")
@Data
public class TtsConfig {

    /**
     * 是否启用MP3编码
     */
    private boolean enableMp3Encoding = true;

    /**
     * MP3编码质量 (1-9, 9为最高质量)
     */
    private int mp3Quality = 7;

    /**
     * MP3比特率 (kbps)
     */
    private int mp3Bitrate = 128;

    /**
     * 是否启用FFmpeg（如果系统有安装）
     */
    private boolean enableFfmpeg = true;

    /**
     * FFmpeg路径（可选，如果不提供则使用系统PATH）
     */
    private String ffmpegPath = "ffmpeg";

    /**
     * 音频转换超时时间（秒）
     */
    private int conversionTimeoutSeconds = 30;

    /**
     * 是否优先使用WAV格式作为备选
     */
    private boolean preferWavFallback = true;

    /**
     * 是否启用音频重采样优化
     */
    private boolean enableResampling = true;

    /**
     * 目标采样率（如果启用重采样）
     */
    private int targetSampleRate = 44100;

    /**
     * 是否启用异步音频处理
     */
    private boolean enableAsyncProcessing = true;

    /**
     * 音频处理线程池大小
     */
    private int audioProcessingThreads = 4;

    /**
     * 是否启用音频质量检测
     */
    private boolean enableQualityCheck = true;

    /**
     * 最小音频长度（字节），小于此长度将被忽略
     */
    private int minAudioLength = 100;

    /**
     * 最大音频长度（字节），超过此长度将被压缩
     */
    private int maxAudioLength = 10 * 1024 * 1024; // 10MB

    /**
     * 是否启用音频缓存
     */
    private boolean enableAudioCache = false;

    /**
     * 音频缓存过期时间（分钟）
     */
    private int audioCacheExpiryMinutes = 60;

    /**
     * 是否调试模式（输出详细日志）
     */
    private boolean debugMode = false;
}